package com.xunk.scene.mapper;

import com.xunk.scene.domain.Scene;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ProjectName: HIM
 * @Package: com.xunk.scene.mapper
 * @ClassName: SceneMapper
 * @Author: luanzhiwei
 * @Description: 场景表映射接口
 * @Date: 2021/5/6 9:37
 * @Version: 1.0
 */
public interface SceneMapper {
    /**
     * 查询场景表
     *
     * @param id      场景表ID
     * @param appFlag
     * @return 场景表
     */
    Scene selectSceneById(@Param("id") Long id, @Param("appFlag") String appFlag);

    /**
     * 根据场景id删除全部关联信息
     *
     * @param id
     */
    void deleteCascadeById(@Param("id") Long id);

    /**
     * 根据家庭id和场景来源（模板场景id）查询场景
     *
     * @param homeId
     * @param derive
     * @return
     */
    Scene selectSceneByHomeIdAndDerive(@Param("homeId") Long homeId, @Param("derive") Long derive, @Param("appFlag") String appFlag);

    /**
     * 根据场景id查询
     *
     * @param sceneId
     * @return
     */
    int selectDeriveCountBySceneId(@Param("sceneId") Long sceneId);

    /**
     * 查询场景表
     *
     * @param homeId  场景表homeId
     * @param appFlag
     * @return 场景表
     */
    List<Scene> selectSceneByHomeId(@Param("homeId") Long homeId, @Param("flag") String flag, @Param("appFlag") String appFlag);

    /**
     * 根据homeid和sceneid查询是否存在关联关系
     *
     * @param homeId
     * @param sceneId
     * @return
     */
    int selectCountByHomeIdAndSceneId(@Param("homeId") Long homeId, @Param("id") Long sceneId);

    /**
     * 根据场景id查询homeId
     *
     * @param sceneId
     * @return
     */
    Long selectHomeIdById(@Param("id") long sceneId);

    /**
     * 查询全部模板场景
     *
     * @return
     */
    List<Scene> selectModelScene();

    /**
     * 新增场景表
     *
     * @param scene 场景表
     * @return 结果
     */
    int insertScene(Scene scene);

    /**
     * 修改场景表
     *
     * @param scene 场景表
     * @return 结果
     */
    int updateScene(Scene scene);

    /**
     * 更新场景激活标识
     *
     * @param homeId
     * @param sceneId
     * @param status
     * @return
     */
    int updateActiveFlag(@Param("homeId") Long homeId, @Param("sceneId") Long sceneId, @Param("activeFlag") String status);

    /**
     * 删除场景表
     *
     * @param id 场景表ID
     * @return 结果
     */
    int deleteSceneById(Long id);

    /**
     * 逻辑删除场景表
     *
     * @param id
     * @param homeId
     * @return
     */
    int hideSceneByIdAndHomeId(@Param("id") Long id, @Param("homeId") Long homeId, @Param("userId") String userId);

    /**
     * 批量删除场景表
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteSceneByIds(Long[] ids);


    /**
     * 添加模板头像到我的场景
     *
     * @param sceneId
     * @param fullPath
     */
    int addSceneIconToMyScene(@Param("id") Long sceneId, @Param("fullPath") String fullPath);

    /**
     * 添加到首页
     *
     * @param id
     * @return
     */
    int updateHomePageById(@Param("id") Long id, @Param("homePage") String homePage);
}
